### C.2 Invoking the gdb `configure` Script

gdb comes with a `configure` script that automates the process of preparing gdb for installation; you can then use `make` to build the `gdb` program.

The gdb distribution includes all the source code you need for gdb in a single directory, whose name is usually composed by appending the version number to ``gdb`'.

For example, the gdb version 7.10.1.20160923-cvs distribution is in the `gdb-7.10.1.20160923-cvs` directory. That directory contains:

`gdb-7.10.1.20160923-cvs/configure` (and supporting files)
  script for configuring gdb and all its supporting libraries
`gdb-7.10.1.20160923-cvs/gdb`
  the source specific to gdb itself
`gdb-7.10.1.20160923-cvs/bfd`
  source for the Binary File Descriptor library
`gdb-7.10.1.20160923-cvs/include`
  gnu include files
`gdb-7.10.1.20160923-cvs/libiberty`
  source for the ``-liberty`' free software library
`gdb-7.10.1.20160923-cvs/opcodes`
  source for the library of opcode tables and disassemblers
`gdb-7.10.1.20160923-cvs/readline`
  source for the gnu command-line interface
`gdb-7.10.1.20160923-cvs/glob`
  source for the gnu filename pattern-matching subroutine
`gdb-7.10.1.20160923-cvs/mmalloc`
  source for the gnu memory-mapped malloc package

The simplest way to configure and build gdb is to run `configure` from the `gdb-version-number` source directory, which in this example is the `gdb-7.10.1.20160923-cvs` directory.

First switch to the `gdb-version-number` source directory if you are not already in it; then run `configure`. Pass the identifier for the platform on which gdb will run as an argument.

For example:

         cd gdb-7.10.1.20160923-cvs
         ./configure host
         make

where host is an identifier such as ``sun4`' or ``decstation`', that identifies the platform where gdb will run. (You can often leave off host; `configure` tries to guess the correct value by examining your system.)

Running ``configure host`' and then running `make` builds the `bfd`, `readline`, `mmalloc`, and `libiberty` libraries, then `gdb` itself. The configured source files, and the binaries, are left in the corresponding source directories.

`configure` is a Bourne-shell (`/bin/sh`) script; if your system does not recognize this automatically when you run a different shell, you may need to run `sh` on it explicitly:

         sh configure host

If you run `configure` from a directory that contains source directories for multiple libraries or programs, such as the `gdb-7.10.1.20160923-cvs` source directory for version 7.10.1.20160923-cvs, `configure` creates configuration files for every directory level underneath (unless you tell it not to, with the ``--norecursion`' option).

You should run the `configure` script from the top directory in the source tree, the `gdb-version-number` directory. If you run `configure` from one of the subdirectories, you will configure only that subdirectory. That is usually not what you want. In particular, if you run the first `configure` from the `gdb` subdirectory of the `gdb-version-number` directory, you will omit the configuration of `bfd`, `readline`, and other sibling directories of the `gdb` subdirectory. This leads to build errors about missing include files such as `bfd/bfd.h`.

You can install `gdb` anywhere; it has no hardwired paths. However, you should make sure that the shell on your path (named by the ``SHELL`' environment variable) is publicly readable. Remember that gdb uses the shell to start your program—some systems refuse to let gdb debug child processes whose programs are not readable.